package com.zkyc.framework.website.controller;

import com.zkyc.framework.common.Enum.LogType;
import com.zkyc.framework.common.annotation.Log;
import com.zkyc.framework.common.exception.ResultCode;
import com.zkyc.framework.common.pojo.Approve;
import com.zkyc.framework.common.vo.ResultVO;
import com.zkyc.framework.common.vo.website.ApprovePageVO;
import com.zkyc.framework.common.vo.website.QuoteVO;
import com.zkyc.framework.website.service.ApproveService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * (Approve)表控制层
 *
 * @author libingchuan
 * @since 2023-02-15 16:01:31
 */
@RestController
@RequestMapping("approve")
public class ApproveController {
    /**
     * 服务对象
     */
    @Resource
    private ApproveService approveService;

    /**
     * 分页查询
     *
     * @return 查询结果
     */
    @GetMapping("listByPage")
    public ResultVO queryByPage(ApprovePageVO approvePageVo) {
        return approveService.queryByPage(approvePageVo);
    }

    /**
     * 查询
     *
     * @return 查询结果
     */
    @GetMapping("list")
    public ResultVO queryList() {
        return approveService.queryList();
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("query/{id}")
    public ResultVO queryById(@PathVariable("id") Integer id) {
        Approve approve = approveService.queryById(id);
        if (approve == null) {
            return ResultVO.fail(ResultCode.SERVE_ERROR);
        }
        return ResultVO.data(approve);
    }

    /**
     * 新增数据
     *
     * @param approve 实体
     * @return 新增结果
     */
    @PostMapping("save")
    public ResultVO add(@RequestBody Approve approve) {
        return approveService.insert(approve);
    }

    /**
     * 编辑数据
     *
     * @param approve 实体
     * @return 编辑结果
     */
    @PostMapping("edit")
    public ResultVO edit(@RequestBody Approve approve) {
        return approveService.update(approve);
    }

    /**
     * 删除数据
     *
     * @param id 主键
     * @return 删除是否成功
     */
    @GetMapping("delete")
    public ResultVO deleteById(Integer id) {
        return approveService.deleteById(id);
    }

    /**
     * 审核
     *
     * @param status 操作状态
     * @return 是否成功
     */
    @GetMapping("approve")
    public ResultVO approve(Integer id, Integer status, String remark, Integer type) {
        return approveService.approve(id, status, remark, type);
    }

    /**
     * 查看详情
     *
     * @param id 主键
     * @return 是否成功
     */
    @GetMapping("detail")
    public ResultVO detail(Integer id, Integer type) {
        return approveService.detail(id, type);
    }

    /**
     * 推荐栏目列表
     *
     * @return 是否成功
     */
    @PostMapping("recommend")
    @Log(type = LogType.推荐稿件)
    public ResultVO recommend(@RequestBody QuoteVO quoteVO) {
        return approveService.recommend(quoteVO);
    }


}

